/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.adapters;

import java.util.ArrayList;
import java.util.List;
import org.cip.esymons.tesoreria.be.CuentaIngreso;
import org.cip.esymons.tesoreria.be.DetPagoAgrupado;
import org.cip.esymons.tesoreria.be.MovimientoCuenta;

/**
 *
 * @author Gilmar
 */
public class AdaptadorDeudaMovimientoCuentaIngresoSeleccionados implements DeudaCuentaIngresoInterfaz {

    private DeudaMovimiento deudaMovimiento;
    private boolean listarUnoPorUno = false;
    private String nombreColegiado=null;

    public String getNombreColegiado() {
        return nombreColegiado;
    }

    public void setNombreColegiado(String nombreColegiado) {
        this.nombreColegiado = nombreColegiado;
    }

    public AdaptadorDeudaMovimientoCuentaIngresoSeleccionados(DeudaMovimiento deudaMovimiento) {
        this.deudaMovimiento = deudaMovimiento;
    }

    public AdaptadorDeudaMovimientoCuentaIngresoSeleccionados(DeudaMovimiento deudaMovimiento, boolean listarUnoPorUnoDeudaOtros) {
        this.deudaMovimiento = deudaMovimiento;
        this.listarUnoPorUno = listarUnoPorUnoDeudaOtros;
    }

    public AdaptadorDeudaMovimientoCuentaIngresoSeleccionados(DeudaMovimiento deudaMovimiento,String nombreColegiado) {
        this.deudaMovimiento = deudaMovimiento;
        this.nombreColegiado = nombreColegiado;
    }

    public AdaptadorDeudaMovimientoCuentaIngresoSeleccionados(DeudaMovimiento deudaMovimiento, boolean listarUnoPorUnoDeudaOtros,String nombreColegiado) {
        this.deudaMovimiento = deudaMovimiento;
        this.listarUnoPorUno = listarUnoPorUnoDeudaOtros;
        this.nombreColegiado = nombreColegiado;
    }

    public List<DetPagoAgrupado> getListaDeudaxIngreso() {
        try {
            List<DetPagoAgrupado> lista = new ArrayList<DetPagoAgrupado>();
            DetPagoAgrupado dci = null;
            for (MovimientoCuenta mc : deudaMovimiento.getListaMovimientos()) {
                if (mc.isSeleccionado()) {
                    dci = new DetPagoAgrupado();
                    dci.setAnio(mc.getMcuAnio());
                    dci.setCantidad(1);
                    if (mc.getFkCinCodigo() == null) {
                        dci.setCuentaIngreso(new CuentaIngreso("000", "Fraccionamiento"));
                        dci.setDescripcion("Fraccionamiento");
                    } else {
                        dci.setCuentaIngreso(mc.getFkCinCodigo());
                        dci.setDescripcion(mc.getFkCinCodigo().getNombreLargoCuentaIngreso() + "-" + mc.getDescripcion());
                    }
                    if(nombreColegiado!=null){
                        dci.setDescripcion(nombreColegiado + " : " + dci.getCuentaIngreso());
                    }
                    dci.setMes(mc.getMcuMes());
                    dci.getListaMovimientos().add(mc);
                    dci.setValor(mc.getMcuSaldo());
                    dci.setValorModificable(mc.getMcuSaldo());
                    if (lista.contains(dci)) {
                        if (listarUnoPorUno) {
                            lista.add(dci);
                        } else {
                            DetPagoAgrupado deuda = lista.get(lista.indexOf(dci));
                            deuda.setCantidad(deuda.getCantidad() + 1);
                            deuda.setAnio(mc.getMcuAnio());
                            deuda.setMes(mc.getMcuMes());
                            deuda.setValor(deuda.getValor() + mc.getMcuSaldo());
                            deuda.setValorModificable(deuda.getValorModificable() + mc.getMcuSaldo());
                            deuda.getListaMovimientos().add(mc);
                        }
                    } else {
                        lista.add(dci);
                    }
                }
            }
            return lista;
        } catch (Exception ex) {
            return new ArrayList<DetPagoAgrupado>();
        }

    }

    public void setListaDeudaxIngreso(List<DetPagoAgrupado> listaDeudaxIngreso) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
